package persistence;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import model.*;
public class PersistenciaComodidad {
	private static PersistenciaComodidad instancia;
	
	public static PersistenciaComodidad getInstancia()
	{
		if (instancia== null)
			instancia =new PersistenciaComodidad();
		return instancia;
	}
	
	public PersistenciaComodidad() {
		// TODO Auto-generated constructor stub
	}
	
	public Comodidad getComodidad(int  id)
	{
		Comodidad c = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		try
		{
			String senten = "SELECT nombre FROM Comodidad where id = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1,id);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{						
				c = new Comodidad(
						result.getInt("id")
						, result.getString("nombre")
						);								
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return c;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Comodidad: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return c;
	}
	
	public ArrayList<Comodidad> getComodidades()
	{
		ArrayList<Comodidad> comodidades = new ArrayList<Comodidad>();
		Comodidad c = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT id, nombre from Comodidad" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);			
			ResultSet result = ps.executeQuery();
			while (result.next())
			{						
				c = new Comodidad(
						result.getInt("id")
						, result.getString("nombre")
						);
				comodidades.add(c);
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return comodidades;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar Comodidades: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return comodidades;
	}	
	
	public ArrayList<Comodidad> getComodidadesHotel(int id_hotel)
	{
		ArrayList<Comodidad> comodidades = new ArrayList<Comodidad>();
		Comodidad c = null; 
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		
		try
		{
			String senten = "SELECT c.id, c.nombre "
					+ "FROM Comodidad c "
					+ "JOIN ComodidadHotel ch ON ch.id_comod=c.id "
					+ "WHERE ch.id_hotel = ?" ;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1,id_hotel);
			ResultSet result = ps.executeQuery();
			while (result.next())
			{						
				c = new Comodidad(
						result.getInt("id")
						, result.getString("nombre")
						);
				comodidades.add(c);
			}
			
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			return comodidades;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al consultar ComodidadesHotel: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
	      return comodidades;
	}	
	
	public Comodidad insertComodidadHotel(Comodidad c, int id_hotel) //
	{
		int newId=0;
		Connection con = PoolConexiones.getPoolConexiones().getConnection();
		String senten = null;
		try
		{					
			senten = "INSERT INTO ComodidadHotel (id_comod, id_hotel) "
					+ "VALUES (?,?)";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten, Statement.RETURN_GENERATED_KEYS);
			ps.setInt(1, c.getId());
			ps.setInt(2, id_hotel);
			ps.execute();
			ResultSet  generatedKeys = ps.getGeneratedKeys();
			if(generatedKeys.next())
			{	
				newId = generatedKeys.getInt(1);
			}
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
			c.setId(newId);
			return c;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Error al Insertar ComodidadHotel: " + e.getMessage());
				e.printStackTrace();
				PoolConexiones.getPoolConexiones().realeaseConnection(con);
	      }
		return c;
	}
	
	public void eliminarComodidadesHotel(int id_hotel)
	{	      
		Connection con = PoolConexiones.getPoolConexiones().getConnection();				
		try
		{
			String senten = "DELETE FROM ComodidadHotel "
					+ "WHERE id_hotel = ?";
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1,id_hotel);	
			ps.execute();
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
		}
		catch( SQLException e ) 
		{
			System.out.println("Error al eliminar ComodidadesHotel: " + e.getMessage());
			e.printStackTrace();
			PoolConexiones.getPoolConexiones().realeaseConnection(con);
	    }
	}	
}
